Date : 12 septembre 1993
Protection : MOT DE PASSE
Programme : SPACE CRUSADE
Outils : SOFT-ICE V2.50
Fichier : ?
Temps pass� : 20 minutes.
Soci�t� :
Divers : Cod� avec RNC
Origine : JKT
Num�ro : 223
On tourne dans la boucle suivante tant que l'on ne tape pas ENTER:
CS=0F78
CS:95DB E80D00 CALL 95EB <ͻ
CS:95DE 0AC0 OR AL,AL �
CS:95E0 74F9 JZ 95DB >ͼ
CS:95E2 50 PUSH AX ET ON ARRIVE ICI SI ENTER...
Le controle des chars. se fait ci-dessous. On place 0000 dans DS:4B75
si tout est OK sinon on y laisse le 0001 d'origine.
CS=0F78
CS:B680 B90800 MOV CX,0008 ; 8 CHARS A CONTROLER.
CS:B683 AC LODSB ; LA BOUCLE DE TEST.
CS:B684 3A05 CMP AL,[DI] ; ON COMPARE LES CHARS.
CS:B686 750A JNZ B692 ; SI PAS OK ON VA EN B692.
CS:B688 47 INC DI ; SUIVANT...
CS:B689 E2F8 LOOP B683 ; ON BOUCLE.
CS:B68B C706754B0000 MOV WORD PTR [4B75],0000 ; ICI SI OK.
CS:B691 C3 RET ; ET ON S'EN VA...
CS:B692 .... .... ; SUITE SI REPONSE MAUVAISE.
Apr�s le RET on compare le contenu de 4B75 avec 0 et on saute ou pas...
Pour le patch il suffit de remplacer le saut conditionnel en B686
par un saut inconditionnel apr�s la boucle pour placer 0000 dans 4B75.
Donc remplacer le mot 750A par EB03 en CS:B686.
Soft-ice m'avait dit que la derni�re INT utilis�e �tait la 1C, mais
en l'utilisant mon lanceur ne trouve pas le patch. En fait je
m'aper�ois que le jeu d�tourne l'INT 1C d�s le d�but. Pas de pot...
Je prends quelque chose de plus classique: l'INT 21 sf 3E et �a
marche.
; PATCH POUR LE PROGRAMME SPACE CRUSADE
; DETOURNEMENT DE L'INT 21
;
;******************************************************************************
; ZONE A INITIALISER
adr_ip1 equ 0b686h ; adresse dont le contenu est � modifier.
; valeur directe.
anc_val equ 0a75h ; Valeur d'origine � rechercher. Invers�e.
nouv_val equ 03EBh ; Nouvelle valeur, JMP
INT_DET equ 21h ; Le num�ro de l'INT que l'on veut utiliser.
sf equ 3eh
BEEP_TONE equ 440 ; Fr�quence de la note.
;******************************************************************************
; Cette partie omise est identique � tous mes lan�eurs...
;******************************************************************************
db 55h,0aah ; Identificateur de d�but.
chaine: db '��������FREDDY_SOFT!������Ŀ'
db '� �'
db '� SPACE CRUSADE �'
db "� I hope you'll enjoy it �"
db '� �'
db '��� Lan�eur Crypt� V1.1 ����'
mess_err db 0ah,0dh,'Programme enfant non trouv�','$'
nom_prg db 'space.exe',0,0,0,0 ; 12 car max + nul
chaine_fin: db 0aah,55h ; Identificateur de fin.
fin_init label near
;----------------------- PLACE RESERVEE POUR LA PILE ------------------------
dw 100 dup (' ')
fin equ this byte ; ici le sommet de la pile, SP.
seg_a ends
end start
|